package ctrLayer;
import modelLayer.*;


/**
 * Vare controlleren er mellemledet mellem UI-laget og modellaget.
 * 
 * @author (Gruppe 2. Jonas, Danny, Kasper, Bruno & Jesper) 
 * @version (17/12-2012)
 */
public class VareCtr
{
    private VareContainer vc;

    /**
     * Constructor for objects of class VareCtr
     */
    public VareCtr()
    {
        vc = VareContainer.getInstance();
    }

    /**
     * Finder en vare ud fra typen.
     * 
     * @return  varens objekt.
     */
    public Vare findVare(String type)
    {
        return vc.findVare(type);
    }
    
    /**
     * Tilføjer en markedsvare til vare containeren.
     * 
     * @param   lokation                    Varens placering.
     * @param   type                        Varens type.
     * @param   beskrivelse                 Vare beskrivelse.
     * @param   stkPris                     Varens pris.
     * @param   maxLager                    Max antal varer på lager.
     * @param   minLager                    Min antal varer på lager.
     * @param   antalPaaLager               Nuværende antal varer på lager.
     * @throws  IllegalArgumentException    Hvis én eller flere af parameterne er negative, eller minLager er større end maxLager.
     * @throws  IllegalStateException       Hvis varen allerede findes.
     */
    public void tilfoejMarkedsVare(Lokation lokation, String type, String beskrivelse,
        double stkPris, int maxLager, int minLager, int antalPaaLager) throws Exception
    {
        if (stkPris < 0)
            throw new IllegalArgumentException("Prisen må ikke være negativ.");
        if (maxLager < 0 || minLager < 0 || antalPaaLager < 0)
            throw new IllegalArgumentException("Min, maks og antal på lager må ikke være negativ.");
        if (minLager > maxLager)
            throw new IllegalArgumentException("Min. antal varer på lager må ikke være større end max. antal varer på lager.");
        
        MarkedsVare vare = new MarkedsVare(lokation, type, beskrivelse, stkPris, maxLager, minLager, antalPaaLager);
        
        // Smid en fejl, hvis varen allerede findes.
        if (!vc.tilfoejVare(vare))
            throw new IllegalStateException("Varen findes allerede!");
    }
}
